home *** CD-ROM | disk | FTP | other *** search
- /* $Id: rdcarray.h 1.5 1995/02/27 12:27:07 JOHN Exp $ */
-
- #ifndef __RDCARRAY__
- #define __RDCARRAY__
-
- #ifndef __RDLIST__
- #include "RDList.h"
- #endif
-
- class RDArray;
-
- // Size limit for a chunk in bytes:
- #define kRDChunkyArrayLimit 32768
-
-
- class RDChunkyArray {
- public:
- RDChunkyArray(short elementSize, long chunckLimit=kRDChunkyArrayLimit);
- ~RDChunkyArray();
-
- void *First();
- void *Last();
- void DeleteAll();
- void Delete(long i); // Warning: slow proc
- void* At(long i); // Warning: slow proc
- void AtPut(long index, void* item);
- long GetSize() const {return fSize;}
- void InsertLast(void *elem);
- void PreAllocate(long nbElements, Boolean setSize=false);
- void CopyData(RDChunkyArray* targetArray);
- protected:
- void BasicDeleteAll();
- void GetSubArray(long i, RDArray*& subArray, long& subIndex);
-
- RDList fArrayList; // list of RDArray
- short fElementSize;
- short fNbrElemInChunk;
- long fSize;
- private:
- friend class RDChunkyArrayIterator;
- //DO NOT USE
- friend class TGrid;
- void Delete(void *elem); //does not work exept by side effect in TGrid
- };
-
-
- class RDChunkyArrayIterator {
- public:
- RDChunkyArrayIterator(const RDChunkyArray *anArray);
- void *First();
- Boolean More() {return fCurItem!=NULL;}
- void *Next();
- protected:
- const RDChunkyArray *fArray;
- long fListIndex;
- long fArrayIndex;
- RDArray *fCurArray;
- void *fCurItem;
- private:
- friend class RDChunkyArray;
- };
-
-
-
- #endif
-